import cn.gov.sdcj.accountancy.rule.RuleManager

/**
 * <p>Description: </p>
 * User: $ {LaiJie}* Date: 14-12-1
 * Time: 上午11:27
 */

def rule_501_505 = { context ->     // 可定义参数，一般是上下文参数
    def bdgtType2AcctNum = ['2': '501', '4': '505']
    def bdgtType2AcctName = ['2': '基本支出', '4': '基金支出']
    科目编码 bdgtType2AcctNum[context.bdgtType]
    科目名称 bdgtType2AcctName[context.bdgtType]
    金额 context.amt
    // 定义规则时，若有参数的，必须返回该参数，以传递到下一条规则中去
    return context
}

def rule_bdgt2accout = { context ->
    科目编码 ".${context.bdgtId[0..2]}.${context.bdgtId[3..4]}.${context.bdgtId[5..6]}"
    科目名称 "--${context.bdgtName}"
    context
}

def ruleA = { context ->
    def src2AcctNum = ['000': '11', '100': '12', '200': '13', '064': '14', '051': '21', '151': '22', '251': '23']
    科目编码 ".${context.payType}.${src2AcctNum[context.srcId] ?: '01'}"
    科目名称 "--$context.payTypeName--$context.srcName"
    context
}

/**
 * 定义模板，支持中英文（中文时请使用UTF-8编码）
 */
def template = { context ->
    凭证 {
        凭证字 '收'
        借 rule_501_505.curry(context) >> rule_bdgt2accout >> ruleA >> { 摘要 '这是摘要' }
        贷 {
            科目编码 '103'
            科目名称 '授权额度'
            金额 context.amt
        }
    }
    voucher {
        groupName '记'
        entry {
            dc 1
            accountNum '103'
            accountName '授权额度'
            amount context.amt
            exp '测试中文'
        }
        entry {
            accountNum '201'
            accountName '二类科目'
            amount context.amt
        }
    }
}

RuleManager.reg("test", template)